package com.google.android.apps.mytracks.clientes;

import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper;
import com.google.android.apps.mytracks.content.TelefonoCliente;
import com.google.android.apps.mytracks.content.TelefonosClienteColumns;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

public class TelefonoClienteDataSource {

  // Database fields
  private SQLiteDatabase database;
  private DatabaseHelper dbHelper;
  private String[] allColumns = TelefonosClienteColumns.COLUMNS;

  public TelefonoClienteDataSource(Context context) {
    dbHelper = new DatabaseHelper(context);
  }

  public void open() throws SQLException {
    database = dbHelper.getWritableDatabase();
  }

  public void close() {
    dbHelper.close();
  }

  public long createTelefonoCliente(TelefonoCliente tf) {
    ContentValues values = new ContentValues();
    values.put(TelefonosClienteColumns.CLIENTEID, tf.getClienteId());
    values.put(TelefonosClienteColumns.NUMERO, tf.getNumero());
    values.put(TelefonosClienteColumns.TIPO, tf.getTipo());
    long insertId = database.insert(TelefonosClienteColumns.TABLE_NAME, null, values);
    return insertId;
  }

  public void deleteTelefonoCliente(TelefonoCliente telefonoCliente) {
    long id = telefonoCliente.getId();
    database.delete(TelefonosClienteColumns.TABLE_NAME, TelefonosClienteColumns._ID
        + " = " + id, null);
  }
  
  public void updateTelefonoCliente(TelefonoCliente telefonoCliente) {
    
    long id = telefonoCliente.getId();
    ContentValues values = new ContentValues();
    values.put(TelefonosClienteColumns.NUMERO, telefonoCliente.getNumero());
    values.put(TelefonosClienteColumns.TIPO, telefonoCliente.getTipo());
    String strFilter = "_id=" + id;
    database.update(TelefonosClienteColumns.TABLE_NAME, values, strFilter, null);
  }

  public List<TelefonoCliente> getAllTelefonoCliente(long clienteId) {
    ArrayList<TelefonoCliente> telefonosCliente = new ArrayList<TelefonoCliente>();
    String[] args = new String[] {String.valueOf(clienteId)};
    Cursor cursor = database.query(TelefonosClienteColumns.TABLE_NAME,
        allColumns, "clienteId=?", args, null, null, TelefonosClienteColumns.DEFAULT_SORT_ORDER);

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
      TelefonoCliente telefonoCliente = cursorToTelefonoCliente(cursor);
      telefonosCliente.add(telefonoCliente);
      cursor.moveToNext();
    }
    cursor.close();
    return telefonosCliente;
  }

  private TelefonoCliente cursorToTelefonoCliente(Cursor cursor) {
    TelefonoCliente telefonoCliente = new TelefonoCliente();
    telefonoCliente.setId(cursor.getLong(0));
    telefonoCliente.setClienteId(cursor.getLong(1));
    telefonoCliente.setNumero(cursor.getString(2));
    telefonoCliente.setTipo(cursor.getString(3));
    return telefonoCliente;
  }
} 